home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Zoo 1: Unborn
/
The Zoo 1 - Unborn.adf
/
AUTOEXEC.AMOS
/
AUTOEXEC.amosSourceCode
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS
UTF-8
Wrap
AMOS Source Code
|
1992-10-23
|
33.9 KB
|
1,264 lines
'
' SlowNote v1.0 - KLT finished (almost) on bonfire night '95 at 2:00am
' ('The Big E' is on in a
' minute! Arghhhh!)
'
' Most of the code is dodgy but it does have its moments, err.. there are
' probably lotz of bits that arn't used which are in (variables,procedures)
' but I didn't have time to hunt them out and erase 'em.
' The text printer isn't very fast but it does the job, a new one is in the
' works which should be incredibly fast (no assemebler). The animals in the
' backdrop are stored primaraly as SPACK files and then depacked at the
' begining of the program to a hidden screen and moved into the bank it just
' vacated as a pure bitmap which can then be poked to the screen.
' Sorry about the lack of comments (ie. none) but if you read the 'Reasons
' For The Delay' article you will see that I just havn't had the time.
' If you wanna contact me for source swapping for AMOS or ASSEMBLER or just
' general chat then my (kultS) address is in the mag, somewhere. If there is
' a secret part, try and find it.
'
' ** Due to a lack of memory, the panal intro has been taken out and one
' of the animals has been stopped from dpeacking, stick it back in if yer
' want but be careful, it gets VERY unstable (its in 35)... its the CAT!...?
'
'------------ initialise and globalise all(most) variables
Set Buffer 50
'_CHKKEY
Global SIZE_OF_HEADER,SIZE_OF_TEXT
Global _MAX_AMOUNT_OF_LINES
Global NUM_OF_PAGES
NUM_OF_PAGES=11
SIZE_OF_HEADER=24
SIZE_OF_TEXT=14
Y_HEADER=20
SELECT_PAGE=1
CURRENT_LINE=0
_SELECTION_TEXT_START=Y_HEADER+SIZE_OF_HEADER+SIZE_OF_TEXT
_MAX_AMOUNT_OF_LINES=(204-SIZE_OF_HEADER)/SIZE_OF_TEXT
_TOTAL_SELECT_PAGES=NUM_OF_PAGES
SIZE_OF_ARTICLE_FONT=8
SIZE_OF_ARTICLE_HEADER=13
HEADER_COLOUR=1 : ARTICLE_LEN=1
PIC_AMOUNT=0
FIND_FILE=False
_MUSIC=True
Dim PIC_NAME$(30)
Dim SELECTION_TEXT_LINES$(NUM_OF_PAGES,_MAX_AMOUNT_OF_LINES)
Dim HEADERS$(NUM_OF_PAGES)
Dim AUTHORS$(NUM_OF_PAGES,_MAX_AMOUNT_OF_LINES)
Dim _TEXT_LINES$(500)
Dim FILES$(NUM_OF_PAGES,_MAX_AMOUNT_OF_LINES)
Global _TOTAL_SELECT_PAGES
Global SIZE_OF_ARTICLE_HEADER
Global SIZE_OF_ARTICLE_FONT
Global AUTHORS$(),CURRENT_LINE
Global SELECTION_TEXT_LINES$()
Global PIC_HEADER$
Global HEADERS$(),Y_HEADER
Global SELECT_PAGE,ARTICLE_HEADER$
Global _TEXT_LINES$(),FILES$(),SCR
Global HEADER_COLOUR,ARTICLE_LEN
Global ARTICLE_SCREEN,AMOUNT_OF_PAGES
Global FIND_FILE,_MUSIC
Global PIC_NAME$(),PIC_AMOUNT
Global CURR_PAGE,_MAXPAGES
Global AN_ANIM_WAIT
Global AN_ANIM
Global FROM_ARTICLE
FROM_ARTICLE=True
AN_ANIM_WAIT=0
AN_ANIM=0
'00000
Dim TXT$(700)
Global CPAGE,_MAXPAGE
Global TXT$()
Global HEADER$,HEADER_INK
Global AUTHOR$,AUTHOR_INK
Global HEADER_FONT$,HEADER_SIZE
Global AUTHOR_FONT$,AUTHOR_SIZE
Global MAINTEXT_FONT$,MAINTEXT_SIZE
'00000
'-------- setup file input to AMOS(RCLF) standard and root-dir
Hide On
Screen Open 0,320,256,2,Lowres
Curs Off
Paper 0 : Cls
Palette 0,$FFF
Flash Off
Degree
Paper 0 : Cls : Curs Off
Set Input 13,10
_CHKDSK
Dir$="zoo:"
Assign "FONTS:" To "Zoo:Fonts"
'Amos Lock
'Break Off
X Mouse=-200 : Y Mouse=-200
Change Mouse 7
Limit Mouse 128,50 To 435,287
_CHKDSK
'Exec "zoo:pp" : Wait 20
Wait 20
'---------- all the procedures used by the program
Procedure _MAKEPOINTS
Unpack 10 To 0
Paper 0
Pen 1
Change Mouse 1
Do
X=X Screen(X Mouse)
Y=Y Screen(Y Mouse)
Print At(10,10);"X:";X;" "
Print At(10,11);"Y:";Y;" "
Loop
End Proc
Procedure _CHECK_EFILES[NOP]
'
' This checks the check code at the top of the page files to ensure
' that they have not been changed (this ain't Magnum ya know!)
' Its still a simple protection nut it works.
'
Dim TTXT$(100),ADASC(100),L(100)
_CHKDSK
For E=1 To NOP
For LKP=1 To 100
TTXT$(LKP)="" : ADASC(LKP)=0 : L(LKP)=0
Next
FIL$="zoo:pg/epage"+Str$(E)
FIL$=FIL$-" "
Open In 1,FIL$
LOP=0
Line Input #1,CHK$
Repeat
Inc LOP
Line Input #1,TTXT$(LOP)
'TTXT$(LOP)=Left$(F$,Len(F$)-1)
L(LOP)=Len(TTXT$(LOP))
For LOP2=1 To Len(TTXT$(LOP))
ADASC(LOP)=ADASC(LOP)+Asc(Mid$(TTXT$(LOP),LOP2,1))
Next
Until Eof(1)
Close 1
'---------- add together all the numbers *3 and change to hex
ACC=0
For LOP2=1 To LOP
ACC=ACC+ADASC(LOP2)
Next
For LOP2=1 To LOP
ACC=ACC+L(LOP2)
Next
ACC=ACC*3
CHK_2$=Hex$(ACC)
V1=Val(CHK$)
V2=Val(CHK_2$)
If V1=V2
'file ok
Else
'---- changed file! [quits]
Palette $F00 : Edit
End If
Next
End Proc
Procedure _SETFONT[_FNT$,SIZLE]
FINDFONT$=Lower$(_FNT$+".font")
FINDFONT$=FINDFONT$-" "
FINDFONTLEN=Len(FINDFONT$)
FINDFONTLENSP=30-FINDFONTLEN
FINDFONT$=FINDFONT$+Space$(FINDFONTLENSP)
LOPFONT=0
Repeat
Inc LOPFONT
CUR_FONT$=Lower$(Font$(LOPFONT))
NAME_FONT$=Left$(CUR_FONT$,30)
SIZE_FONT=Val(Mid$(CUR_FONT$,31,2))
' If LOPFONT>11
' Palette Rnd($FFF) : Bell
' End If
Until SIZE_FONT=SIZLE and NAME_FONT$=FINDFONT$
Set Font LOPFONT
End Proc
Procedure _CHKKEY
Screen Open 0,320,256,2,Lowres
Curs Off
'Hide
Paper 0 : Cls
Palette 0,$FFF
Flash Off
Degree
Do
S$=Inkey$
S=Scancode
Print S
Loop
End Proc
Procedure _UPDATE_TITLEBAR_FOR_SELECT
Screen 2 : Paper 0 : Cls
Curs Off
Home : Print "Zoo Issue 1 - INDEX"
Print At(65,0);"Page";SCR;" of";_TOTAL_SELECT_PAGES;" "
Screen 0
End Proc
Procedure _UPDATE_TITLEBAR_FOR_DOC
Screen 2
Paper 0 : Cls : Home
Curs Off
Home : Print HEADER$;" "
Print At(65,0);"Page";CPAGE;" of";_MAXPAGE;" "
Screen 0
End Proc
Procedure _UPDATE_TITLEBAR_FOR_PICS
Screen 2
Curs Off
Home : Print PIC_HEADER$;" "
Print At(65,0);"Page";CURR_PAGE;" of";_MAXPAGES;" "
Screen 0
End Proc
Procedure _SETUP_ICON_DETECT_ZONES
Screen 1
Reserve Zone 7
'------- INDEX
Set Zone 1,218,6 To 262,33
'------- EAT ME
Set Zone 2,165,5 To 209,34
'------- MUSIC
Set Zone 3,7,6 To 50,34
'------- FIRST
Set Zone 4,60,6 To 103,33
'------- LAST
Set Zone 5,112,6 To 156,33
'------- <<<<
Set Zone 7,267,19 To 299,35
'------- >>>>
Set Zone 6,283,5 To 317,20
End Proc
Procedure _SETUP_BOBS
Screen Open 0,640,256,8,Hires
Curs Off
Paper 0 : Cls
Palette 0,$FFF
Flash Off
Degree
Ink 1
Bar 0,0 To 640,SIZE_OF_TEXT
Get Bob 1,0,0 To 640,SIZE_OF_TEXT
Screen Close 0
Load Iff "zoo:m1",0 : Get Bob 3,1,1 To 16,16
Load Iff "zoo:m2",0 : Get Bob 4,1,1 To 16,29
End Proc
Procedure _FONTS_INTO_RAM[AMOUNT_OF_FONTS]
_CHKDSK
Get Fonts
'For LOP=1 To AMOUNT_OF_FONTS
' Set Font LOP
'Next
'Get Fonts
End Proc
Procedure _INFO_ON_FONTS[AMOUNT_OF_FONTS]
Screen Open 0,640,256,2,Hires
Curs Off
Hide
Paper 0 : Cls
Palette 0,$FFF
Flash Off
Degree
For LOP=1 To AMOUNT_OF_FONTS
Print LOP;" ";Font$(LOP)
Wait Key
Next
End Proc
Procedure _SETUP_SCREENS
'------- TITLE BAR
Screen Open 2,640,50,2,Hires
Curs Off
Flash Off
Palette $0,$0
Screen Display 2,,40,,8 : Hide On : Wait Vbl
Centre "...Loading ZOO Issue 1 Index..."
Fade 1,$FFF,$FFF
Wait 15
Fade 1,$415,$FFF
Wait 15
Wait Vbl
'------- CONTROL BAR
Unpack 10 To 1
Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Fade 5,$0,$FF9,$27,$6,$38,$49,$58,$16B,$28B,$203,$F70,$7AC,$9CE,$500,$BEF,$FFF
For YP=256+55 To 256 Step -1
Screen Display 1,,YP,,
Wait Vbl
Next
Fade 2,0,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF
Wait 2*15
Fade 3,$0,$FF9,$27,$6,$38,$49,$58,$16B,$28B,$203,$F70,$7AC,$9CE,$500,$BEF,$FFF
Screen To Front 1
_SETUP_ICON_DETECT_ZONES
'------- MAIN SCREEN (temp)
Screen Open 0,320,56,2,Lowres
Curs Off
Paper 0 : Cls
Palette 0,$0
Flash Off
End Proc
Procedure _LOAD_SELECTION_PAGES
Screen 0
'------ load the authors,names and filenames into dimensions from a file
_CHKDSK
For LOP1=1 To NUM_OF_PAGES
_LOAD$="pg/epage"+Str$(LOP1)
_LOAD$=_LOAD$-" "
Open In 1,_LOAD$
Line Input #1,ZZ$
Line Input #1,HEADERS$(LOP1)
LOP2=0
Screen 0
Repeat
'Screen 0
Inc LOP2
Line Input #1,SELECTION_TEXT_LINES$(LOP1,LOP2)
'SELECTION_TEXT_LINES$(LOP1,LOP2)=Left$(SELECTION_TEXT_LINES$(LOP1,LOP2),Len(SELECTION_TEXT_LINES$(LOP1,LOP2))-1)
Line Input #1,AUTHORS$(LOP1,LOP2)
'AUTHORS$(LOP1,LOP2)=Left$(AUTHORS$(LOP1,LOP2),Len(AUTHORS$(LOP1,LOP2))-1)
Line Input #1,FILES$(LOP1,LOP2)
'FILES$(LOP1,LOP2)=Left$(FILES$(LOP1,LOP2),Len(FILES$(LOP1,LOP2))-1)
Until Eof(1)
Close 1
Next
End Proc
Procedure _SHOW_SELECTION_SCREEN[SCR]
'----- just in case...
If SCR>NUM_OF_PAGES Then Pop Proc
_UPDATE_TITLEBAR_FOR_SELECT
'-------- setup screen for the text
Screen 0 : Flash Off : Fade 1,0,0,0,0,0,0,0,0 : Wait 15
'Screen 0 : Autoback 0 : Paper 0 : Cls : Screen Swap : Paper 0 : Cls
'Unpack 12 To 0
' If FROM_ARTICLE=True
Screen Open 0,640,255,8,Hires
Paper 0 : Cls : Curs Off
Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Flash Off
Screen To Back 0
Screen Display 0,,50,,
Double Buffer : Autoback 0
'------ set header font and calculate its central position(autoconfig2res)
' Copy Start(30),Start(30)+Length(30) To PHBASE
_SETFONT["newcentury",24]
_CENTRE=Screen Width(0)/2
HEADER_WIDTH=Text Length(HEADERS$(SCR))
XPOS_PLACE_HEADER=_CENTRE-(HEADER_WIDTH/2)
Paper 0
Ink 5 : Gr Writing 2
Text XPOS_PLACE_HEADER,Y_HEADER,HEADERS$(SCR)
'------- place all the text AFTER the header (self configuring)
_SETFONT["citylight",14]
For LOP=1 To _MAX_AMOUNT_OF_LINES
Text 5,SIZE_OF_HEADER+(LOP*SIZE_OF_TEXT),SELECTION_TEXT_LINES$(SCR,LOP)
Next
For LOP=1 To _MAX_AMOUNT_OF_LINES
Text 635-Text Length(AUTHORS$(SCR,LOP)),SIZE_OF_HEADER+(LOP*SIZE_OF_TEXT),AUTHORS$(SCR,LOP)
Next
PHBASE=Logbase(0)
If AN_ANIM<1 or AN_ANIM>6
AN_ANIM=1
End If
AN_ANIM_WAIT=1
Copy Start(AN_ANIM+29),Start(AN_ANIM+29)+Length(AN_ANIM+29) To PHBASE
Screen Copy Logic To Physic
Fade 1,$0,$113,$555,$555,$411,$224,$66F,$AAA
Wait 15
End Proc
Procedure _LOAD_TEXT[NUMIN]
'
' this procedure loads in the ascii file, line by line into an array.
' whilst its doing this it also looks for any use of colour or headers
' etc and makes notes on the left most part of the line in the form of a
' '{' character.
'
_LOAD$="Zoo:Articles/"+FILES$(SCR,NUMIN-1)
_LOAD$=_LOAD$-" "
'---- is it there?
If Not Exist(_LOAD$)
FIND_FILE=False
Pop Proc
Else
FIND_FILE=True
End If
_CHKDSK
Change Mouse 7
'---- clear article buffer ready for the new article
For LOP=0 To 700
TXT$(LOP)=""
Next
'---- test if it is an IFFLOAD (file input reset to 10,-1) - LF
Set Input 10,-1
Open In 1,_LOAD$
Line Input #1,TST$
If Mid$(TST$,0,3)<>"PIC"
'--- not a picture so the file input is set back to 13,10 - RCLF
Close 1
Set Input 13,10
Open In 1,_LOAD$
SIZESDONE=False
LOP=0
ARTICLE_LEN=0
Repeat
Line Input #1,F$
NO_NEED=False
'---- check for the header name
If Mid$(F$,0,2)="@H"
HEADER$=Mid$(F$,5,Len(F$)-4)
HEADER_INK=Val(Mid$(F$,4,1))
NO_NEED=True
End If
'---- check for the author(s) name
If Mid$(F$,0,2)="@A"
AUTHOR$=Mid$(F$,5,Len(F$)-4)
AUTHOR_INK=Val(Mid$(F$,4,1))
NO_NEED=True
End If
'---- check for AUTHOR font allocation string
If Mid$(F$,0,3)="@FA"
AUTHOR_FONT$=Right$(F$,Len(F$)-3)
AUTHOR_FONT$=Left$(AUTHOR_FONT$,Len(AUTHOR_FONT$)-2)
AUTHOR_SIZE=Val(Right$(F$,2))
NO_NEED=True
End If
'---- check for HEADER font allocation string
If Mid$(F$,0,3)="@FH"
HEADER_FONT$=Right$(F$,Len(F$)-3)
HEADER_FONT$=Left$(HEADER_FONT$,Len(HEADER_FONT$)-2)
HEADER_SIZE=Val(Right$(F$,2))
NO_NEED=True
End If
'---- check for MAINTEXT font allocation string
If Mid$(F$,0,3)="@FM"
MAINTEXT_FONT$=Right$(F$,Len(F$)-3)
MAINTEXT_FONT$=Left$(MAINTEXT_FONT$,Len(MAINTEXT_FONT$)-2)
MAINTEXT_SIZE=Val(Right$(F$,2))
NO_NEED=True
End If
'----- check for BACKCOLOUR hex colour string
If Mid$(F$,0,2)="@$"
BACKCOLOUR$=Mid$(F$,1,4)
NO_NEED=True
End If
If F$="X0*]"
NO_NEED=True
End If
If NO_NEED=False
Inc LOP
TXT$(LOP)=F$
Inc ARTICLE_LEN
End If
Until F$="X0*]"
Close 1
Change Mouse 6
Pop Proc
End If
'------------ THIS BIT LOADS PICTURES!
'----- hoho
Change Mouse 7
Line Input #1,F$
PIC_AMOUNT=Val(F$)
Line Input #1,F$
PIC_HEADER$=F$
For LOP=1 To PIC_AMOUNT
Line Input #1,PIC_NAME$(LOP)
Next
Close 1
_MAXPAGES=PIC_AMOUNT
CURR_PAGE=1
_UPDATE_PIC=True
Repeat
If _UPDATE_PIC=True
Screen 0
Change Mouse 7
Load Iff "zoo:pics/"+PIC_NAME$(CURR_PAGE),0
Screen To Back 0
Screen Display 0,,52,,
_UPDATE_PIC=False
_UPDATE_TITLEBAR_FOR_PICS
Change Mouse 6
S$=""
S=0
Clear Key
End If
S=Scancode
S$=Inkey$
If Mouse Screen=1 or S>0
Screen 1
If Mouse Key=1 or S>0
Z=Mouse Zone
If(Z=3 and Mouse Key=1) or S=55
_MUSIC_OPTION
Z=0
S=0
Clear Key
End If
If(Z=4 and Mouse Key=1) or S=80
If CURR_PAGE>1
CURR_PAGE=1 : _UPDATE_PIC=True
Z=0
S=0
Clear Key
End If
End If
If(Z=5 and Mouse Key=1) or S=81
If CURR_PAGE<_MAXPAGES
CURR_PAGE=_MAXPAGES : _UPDATE_PIC=True
Z=0
S=0
Clear Key
End If
End If
If(Z=6 and Mouse Key=1) or S=78
If CURR_PAGE<_MAXPAGES
Inc CURR_PAGE : _UPDATE_PIC=True
Z=0
S=0
Clear Key
End If
End If
If(Z=7 and Mouse Key=1) or S=79
If CURR_PAGE>1
Dec CURR_PAGE : _UPDATE_PIC=True
End If
Z=0
S=0
Clear Key
End If
'----- eat me
If(Z=2 and Mouse Key=1) or S=82
Screen 2 : Paper 0 : Cls
Screen To Front 2
Screen Display 2,,,,16
Home : Print "Please enter the page you wish to go to: (1 -"+Str$(_MAXPAGES)+")"
Input GTO$
GTO=Val(GTO$)
Screen Display 2,,,,8
Screen To Back 2
Screen 2 : Paper 0 : Cls
If GTO>0 and GTO=<_MAXPAGES and GTO<>CURR_PAGE
Screen 0
CURR_PAGE=GTO
_UPDATE_PIC=True
Screen 1
Else
_UPDATE_TITLEBAR_FOR_PICS
End If
Screen 1
Z=0
S=0
Clear Key
End If
End If
End If
Until Mouse Key=1 and Mouse Zone=1 or S=69
Screen 0 : Fade 1 : Wait 15 : Paper 0 : Cls
_SHOW_SELECTION_SCREEN[SCR]
FIND_FILE=False
End Proc
Procedure _SHOW_TEXT_FILE2[HEADERFONT$,HEADERSIZE,AUTHORFONT$,AUTHORSIZE,MAINTEXTFONT$,MAINTEXTSIZE,PAGE]
_UPDATE_TITLEBAR_FOR_DOC
Paper 0 : Cls
Gr Writing 0
_CLEAR_PALETTE
If PAGE=1
'------ for the first page...
'------ put on a header
_SETFONT[HEADERFONT$,HEADERSIZE]
TL=Text Length(HEADER$)
TL=TL/2
Ink HEADER_INK
Text 320-TL,HEADERSIZE,HEADER$
'------ and the author
_SETFONT[AUTHORFONT$,AUTHORSIZE]
TL=Text Length(AUTHOR$)
TL=TL/2
Ink AUTHOR_INK
Text 320-TL,AUTHORSIZE+HEADERSIZE,AUTHOR$
'------ and some main text
CURRLINE=0
YPOS=HEADERSIZE+AUTHORSIZE
_SETFONT[MAINTEXTFONT$,MAINTEXTSIZE]
Repeat
Inc CURRLINE
YPOS=YPOS+MAINTEXTSIZE
'------ are there any colour changes on this line??
If Left$(TXT$(CURRLINE),1)="{"
XPOS=0
For LOP=3 To Len(TXT$(CURRLINE))
If Mid$(TXT$(CURRLINE),LOP,1)="@"
Ink Val(Mid$(TXT$(CURRLINE),LOP+1,1))
LOP=LOP+2
End If
G$=Mid$(TXT$(CURRLINE),LOP,1)
TEXLEN=Text Length(G$)
XPOS=XPOS+TEXLEN
Text XPOS-TEXLEN,YPOS,G$
Next
Else
'------ if no changes, just print the text as a whole line
Ink Val(Left$(TXT$(CURRLINE),1))
If Len(TXT$(CURRLINE))>0
Text 0,YPOS,Right$(TXT$(CURRLINE),Len(TXT$(CURRLINE))-1)
End If
End If
Until YPOS>(204-MAINTEXTSIZE)
Else
'----- NOT page 1 so forget all the headers etc and just do text
SIZE1=HEADERSIZE+AUTHORSIZE-MAINTEXTSIZE
MOST_ON_1ST_PAGE=Int((204-SIZE1)/MAINTEXTSIZE)
MOST_ON_NORMAL_PAGE=Int(204/MAINTEXTSIZE)
CURRLINE=MOST_ON_1ST_PAGE+(MOST_ON_NORMAL_PAGE*(PAGE-2))
YPOS=0
Repeat
YPOS=YPOS+MAINTEXTSIZE
'----- are there any middle changes??
If Left$(TXT$(CURRLINE),1)="{"
XPOS=0
For LOP=3 To Len(TXT$(CURRLINE))
CURRENT_INK=Val(Mid$(TXT$(CURRLINE),2,1))
If Mid$(TXT$(CURRLINE),LOP,1)="@"
CURRENT_INK=Val(Mid$(TXT$(CURRLINE),LOP+1,1))
Ink CURRENT_INK
LOP=LOP+2
End If
G$=Mid$(TXT$(CURRLINE),LOP,1)
TEXLEN=Text Length(G$)
XPOS=XPOS+TEXLEN
Text XPOS-TEXLEN,YPOS,G$
Next
Else
'------ no, so just paste the entire line
Ink Val(Left$(TXT$(CURRLINE),1))
If Len(TXT$(CURRLINE))>0
Text 0,YPOS,Right$(TXT$(CURRLINE),Len(TXT$(CURRLINE))-1)
End If
End If
Inc CURRLINE
Until YPOS>(204-MAINTEXTSIZE)
End If
_RESTORE_PALETTE
Wait 15
End Proc
Procedure _HANDLE_TEXT_FILE
Screen Open 0,640,235,8,Hires
Screen To Back 0
Curs Off
Paper 0 : Cls
Flash Off
Palette 0,$AF1,$F00,$FF0,$FA1,$559,$F84
Flash 7,"(FFF,20)(000,20)"
Screen Display 0,,50,,
SIZE_1=HEADER_SIZE+AUTHOR_SIZE
G=204-SIZE_1
H=G/MAINTEXT_SIZE
J=204/MAINTEXT_SIZE
'_maxpages has 2 added because the INT spare is added on and the title page
'is add.
If ARTICLE_LEN>H
PAGES1=ARTICLE_LEN-H : PAGES2=PAGES1/J : _MAXPAGE=Int(PAGES2)+2
Else
_MAXPAGE=1
End If
CPAGE=1
_SHOW_TEXT_FILE2[HEADER_FONT$,HEADER_SIZE,AUTHOR_FONT$,AUTHOR_SIZE,MAINTEXT_FONT$,MAINTEXT_SIZE,CPAGE]
Screen 1
Repeat
S=Scancode
S$=Inkey$
If Mouse Key=1 or S>0
Z=Mouse Zone
'------ >>>>
If(Z=6 and Mouse Key=1) or S=78
If CPAGE<_MAXPAGE
Inc CPAGE
Screen 0
_SHOW_TEXT_FILE2[HEADER_FONT$,HEADER_SIZE,AUTHOR_FONT$,AUTHOR_SIZE,MAINTEXT_FONT$,MAINTEXT_SIZE,CPAGE]
Screen 1
Z=0
S=0
Clear Key
End If
End If
'------ <<<<
If(Z=7 and Mouse Key=1) or S=79
If CPAGE>1
Dec CPAGE
Screen 0
_SHOW_TEXT_FILE2[HEADER_FONT$,HEADER_SIZE,AUTHOR_FONT$,AUTHOR_SIZE,MAINTEXT_FONT$,MAINTEXT_SIZE,CPAGE]
Screen 1
Z=0
S=0
Clear Key
End If
End If
'------ MUSIC
If(Z=3 and Mouse Key=1) or S=55
_MUSIC_OPTION
Z=0
S=0
Clear Key
End If
'------ first page
If(Z=4 and Mouse Key=1) or S=80
If CPAGE>1
Screen 0
CPAGE=1
_SHOW_TEXT_FILE2[HEADER_FONT$,HEADER_SIZE,AUTHOR_FONT$,AUTHOR_SIZE,MAINTEXT_FONT$,MAINTEXT_SIZE,CPAGE]
Screen 1
Z=0
S=0
Clear Key
End If
End If
'------ last page
If(Z=5 and Mouse Key=1) or S=81
If CPAGE<_MAXPAGE
Screen 0
CPAGE=_MAXPAGE
_SHOW_TEXT_FILE2[HEADER_FONT$,HEADER_SIZE,AUTHOR_FONT$,AUTHOR_SIZE,MAINTEXT_FONT$,MAINTEXT_SIZE,CPAGE]
Screen 1
Z=0
S=0
Clear Key
End If
End If
'----- eat me
If(Z=2 and Mouse Key=1) or S=82
Screen 2 : Paper 0 : Cls
Screen To Front 2
Screen Display 2,,,,16
Home : Print "Please enter the page you wish to go to: (1 -"+Str$(_MAXPAGE)+")"
Input GTO$
GTO=Val(GTO$)
Screen Display 2,,,,8
Screen To Back 2
Screen 2 : Paper 0 : Cls
If GTO>0 and GTO=<_MAXPAGE and GTO<>CPAGE
Screen 0
CPAGE=GTO
_SHOW_TEXT_FILE2[HEADER_FONT$,HEADER_SIZE,AUTHOR_FONT$,AUTHOR_SIZE,MAINTEXT_FONT$,MAINTEXT_SIZE,CPAGE]
Screen 1
Else
_UPDATE_TITLEBAR_FOR_DOC
End If
Screen 1
Z=0
S=0
Clear Key
End If
End If
Until(Mouse Key=1 and Mouse Zone=1) or S=69
_SHOW_SELECTION_SCREEN[SCR]
End Proc
Procedure _SELECT_ONE[SCR]
Autoback 2
Show On
Change Mouse 6
Do
Set Bob 1,,-3,%111000
Y=(Y Screen(Y Mouse)/SIZE_OF_TEXT)*SIZE_OF_TEXT
PHBASE=Phybase(0)
Add AN_ANIM_WAIT,1,1 To 50
If AN_ANIM_WAIT=50
AN_ANIM=AN_ANIM+1
If AN_ANIM>5
AN_ANIM=1
End If
End If
' If AN_ANIM<1
' AN_ANIM=1
' End If
' If AN_ANIM>6
' AN_ANIM=7
' End If
Copy Start(AN_ANIM+29),Start(AN_ANIM+29)+Length(AN_ANIM+29) To PHBASE
'------ make sure line stays between limits
If Y>SIZE_OF_HEADER
If Y<SIZE_OF_HEADER+(SIZE_OF_TEXT*_MAX_AMOUNT_OF_LINES)
If SELECTION_TEXT_LINES$(SCR,((Y-2)/(SIZE_OF_TEXT-1))-1)<>""
Bob 1,0,Y-2,1
CURRENT_LINE=(Y-2)/(SIZE_OF_TEXT-1)
'*** Update titlebar with the current file
Screen 2 : Home
_ADD=(40-Len(SELECTION_TEXT_LINES$(SCR,CURRENT_LINE-1)))/2
TIT_BAR_TEXT$=Space$(_ADD)+SELECTION_TEXT_LINES$(SCR,CURRENT_LINE-1)+Space$(_ADD)
Centre TIT_BAR_TEXT$
Screen 0
If Mouse Key=1
Wait Vbl
Screen Swap
_LOAD_TEXT[CURRENT_LINE]
If FIND_FILE=True
Fade 1,0,0,0,0,0,0,0,0,0 : Wait 15
_HANDLE_TEXT_FILE
End If
End If
Else
Bob Off 1
Screen 2 : Centre Space$(40) : Screen 0
End If
Else
Bob Off 1
Screen 2 : Centre Space$(40) : Screen 0
End If
Else
Bob Off 1
Screen 2 : Centre Space$(40) : Screen 0
End If
'----- get key input
S$=Inkey$
S=Scancode
'------ if the pointer goes below max then begin to check icons
If Y>SIZE_OF_HEADER+(SIZE_OF_TEXT*_MAX_AMOUNT_OF_LINES) or S<>0
Screen 1
If Mouse Key=1 or S<>0
Z=Mouse Zone
If(Z=3 and Mouse Key=1) or S=55
_MUSIC_OPTION
Z=0
End If
If(Z=4 and Mouse Key=1) or S=80
If SCR>1
SCR=1 : FROM_ARTICLE=False : _SHOW_SELECTION_SCREEN[SCR]
Z=0
End If
End If
If(Z=5 and Mouse Key=1) or S=81
If SCR<NUM_OF_PAGES
SCR=NUM_OF_PAGES : FROM_ARTICLE=False : _SHOW_SELECTION_SCREEN[SCR]
Z=0
End If
End If
If(Z=6 and Mouse Key=1) or S=78
If SCR<NUM_OF_PAGES
Inc SCR : FROM_ARTICLE=False : _SHOW_SELECTION_SCREEN[SCR]
Z=0
End If
End If
If(Z=7 and Mouse Key=1) or S=79
If SCR>1
Dec SCR : FROM_ARTICLE=False : _SHOW_SELECTION_SCREEN[SCR]
Z=0
End If
End If
'----- eat me
If(Z=2 and Mouse Key=1) or S=82
Screen 2 : Paper 0 : Cls
Screen To Front 2
Screen Display 2,,,,16
Home : Print "Please enter the page you wish to go to: (1 -"+Str$(NUM_OF_PAGES)+")"
Input GTO$
GTO=Val(GTO$)
Screen Display 2,,,,8
Screen To Back 2
Screen 2 : Paper 0 : Cls
If GTO>0 and GTO=<NUM_OF_PAGES and GTO<>SCR
Screen 0
SCR=GTO
FROM_ARTICLE=False
_SHOW_SELECTION_SCREEN[SCR]
Screen 1
Else
_UPDATE_TITLEBAR_FOR_SELECT
End If
Screen 1
Z=0
End If
If S<>0
S=0
S$=""
Clear Key
End If
End If
End If
Screen 0
Wait Vbl
Loop
End Proc
Procedure _LOAD_FILE_NAMES
For LOP1=1 To NUM_OF_PAGES
_LOAD$="file/page"+Str$(LOP1)+".files"
_LOAD$=_LOAD$-" "
Open In 1,_LOAD$
For LOP2=1 To _MAX_AMOUNT_OF_LINES
Line Input #1,F$
FILES$(LOP1,LOP2)=F$
Print F$
Next
Close 1
Next
End Proc
Procedure _SHOW_TEXT_FILE
BACK_TO_SELECT=False
HEADER_START=12
_UPDATE_TEXT=True
Screen Open 0,640,205,8,Hires
Curs Off
Paper 0 : Cls
Flash Off
Palette 0,0,0,0,0,0,0,0,0,0,0,0,0
Screen To Back 0
Screen Display 0,,50,,
Gr Writing 0
Wait Vbl
_SETFONT["beton",13]
_CENTRE=Screen Width(0)/2
HEADER_WIDTH=Text Length(ARTICLE_HEADER$)
XPOS_PLACE_HEADER=_CENTRE-(HEADER_WIDTH/2)
LINES_PER_PAGE_NOT_INC_HEADER=Screen Height(0)/SIZE_OF_ARTICLE_FONT
LINES_PER_PAGE_INC_HEADER=(LINES_PER_PAGE_NOT_INC_HEADER-SIZE_OF_HEADER_FONT)
'--- i'm a bit worried on the max pages calculation, needs lotz testin ---
AMOUNT_OF_PAGES=Int(ARTICLE_LEN/LINES_PER_PAGE_NOT_INC_HEADER)+1
ARTICLE_SCREEN=1
_SETFONT["darkparticle",8]
_UPDATE_TITLEBAR_FOR_DOC
Change Mouse 6
Repeat
If _UPDATE_TEXT=True
Screen 0
Flash Off
Fade 1,0,0,0,0,0,0,0,0,0 : Wait 15
Extension_12_0380 -1
Wait Vbl
Clear Key
S=0
S$=""
If ARTICLE_SCREEN=1
LINES_PER_PAGE=LINES_PER_PAGE_INC_HEADER
_SETFONT["beton",13]
Ink HEADER_COLOUR
Text XPOS_PLACE_HEADER,HEADER_START,ARTICLE_HEADER$
'YPOS=SIZE_OF_ARTICLE_HEADER
YPOS=HEADER_START+5
_SETFONT["darkparticle",8]
LOP=((ARTICLE_SCREEN-1)*(Screen Height(0)/SIZE_OF_ARTICLE_FONT))+1
Else
LINES_PER_PAGE=LINES_PER_PAGE_NOT_INC_HEADER
LOP=(ARTICLE_SCREEN-1)*(Screen Height(0)/SIZE_OF_ARTICLE_FONT)
YPOS=7
End If
_UPDATE_TITLEBAR_FOR_DOC
Repeat
Inc LOP
TEXIN$=_TEXT_LINES$(LOP)
If Mid$(TEXIN$,0,1)="@"
Ink Val(Mid$(TEXIN$,2,1))
TEXIN$=Mid$(TEXIN$,3,Len(TEXIN$)-2)
End If
Text 1,YPOS,TEXIN$
YPOS=YPOS+SIZE_OF_ARTICLE_FONT
Until YPOS=>(Screen Height(0)+8)-SIZE_OF_ARTICLE_FONT
'Fade 1,0,$FFF,$AF1,$555,$777,$999,$1F1 : Wait 15
Fade 1,0,$FFF,$D20,$FF0,$F0,$3AF,$C1A : Wait 15
Flash 7,"(FFF,20)(000,20)" : Wait 10
_UPDATE_TEXT=False
End If
S$=Inkey$ : S=Scancode
If Mouse Screen=1 or S<>0
Screen 1
If Mouse Key=1 or S<>0
If Mouse Zone=1 or S=69
BACK_TO_SELECT=True
End If
If Mouse Zone=3 or S=55
_MUSIC_OPTION
End If
If Mouse Zone=4
If ARTICLE_SCREEN>1
ARTICLE_SCREEN=1 : _UPDATE_TEXT=True
End If
End If
If Mouse Zone=5
If ARTICLE_SCREEN<AMOUNT_OF_PAGES
ARTICLE_SCREEN=AMOUNT_OF_PAGES : _UPDATE_TEXT=True
End If
End If
If Mouse Zone=6 or S=78
If ARTICLE_SCREEN<AMOUNT_OF_PAGES
Inc ARTICLE_SCREEN : _UPDATE_TEXT=True
End If
End If
If Mouse Zone=7 or S=79
If ARTICLE_SCREEN>1
Dec ARTICLE_SCREEN : _UPDATE_TEXT=True
End If
If S<>0
S=0
S$=""
Clear Key
End If
End If
End If
End If
Until BACK_TO_SELECT=True
_SHOW_SELECTION_SCREEN[SCR]
End Proc
Procedure _CHKDSK
' If Not Exist("zoo:")
' Edit
' End If
End Proc
Procedure _PLAY_MUSIC
If Length(3)>0
Led Off
Track Play 3
Track Loop On
End If
End Proc
Procedure _MUSIC_OPTION
If _MUSIC=True
Track Stop
_MUSIC=False
Led On
Else
_PLAY_MUSIC
_MUSIC=True
End If
Wait 40
End Proc
Procedure _LOAD_MUSIC
_CHKDSK
Hide On
Load Iff "pics/ima1.pic",0 : Hide On : Wait Vbl
Fade 3,$FFF,$FFD,$EEB,$CD9,$AC8,$8B7,$5A5,$495,$385,$275,$165,$155,$34,$23,$12,$1
Wait 3*15
If Length(3)=0
Track Load "zoo:mod.START",3
End If
Load Iff "pics/ima2.pic",1 : Screen To Back 1
_PLAY_MUSIC
Screen 0 : Fade 1,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF
Wait 15
Screen 1 : Palette $FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF
Screen To Front 1
Fade 1,$FFF,$FDB,$DA8,$C76,$A44,$835,$726,$627,$416,$205,$104,$103,$2,$1,$0,$0
Wait 15
End Proc
Procedure _GO_PIC
Colour Back $0 : Wait Vbl
Screen Close 0 : Screen 1 : Fade 1 : Wait 15 : Screen Close 1
End Proc
Procedure _FADEUP[SCR]
Def Fn MAKECOL(R,G,B)=R*256+G*16+B
Def Fn RED(C)=(C/256) mod 16
Def Fn GREEN(C)=(C/16) mod 16
Def Fn BLUE(C)=C mod 16
Screen Hide SCR
Dim CR(15)
Dim CG(15)
Dim CB(15)
Dim CFULL(15)
For LOP=0 To 15
'C(LOP)=Colour(LOP)
C=Colour(LOP)
R#= Fn RED(Colour(LOP))
G#= Fn GREEN(Colour(LOP))
B#= Fn BLUE(Colour(LOP))
CR(LOP)=R#
CG(LOP)=G#
CB(LOP)=B#
Next
Colour 0,$0
Colour 15,$0
Extension_18_03CA 0 To 15
'Hide
Screen Show 0
TWAIT=1
LEVEL=15
For LOP2=1 To LEVEL
For LOP=0 To 15 Step 1
R#= Fn RED(Colour(LOP))
G#= Fn GREEN(Colour(LOP))
B#= Fn BLUE(Colour(LOP))
R#=R#+1
G#=G#+1
B#=B#+1
If R#>CR(LOP) Then R#=CR(LOP)
If G#>CG(LOP) Then G#=CG(LOP)
If B#>CB(LOP) Then B#=CB(LOP)
'Colour LOP, Fn MAKECOL(R#,G#,B#)
CFULL(LOP)= Fn MAKECOL(R#,G#,B#)
For LOP3=1 To TWAIT : Next
Next LOP
For LOP=0 To 15 Step 1
Colour LOP,CFULL(LOP)
Next
' Wait Vbl
Next
End Proc
Procedure _LOADING
Ink 1
Bar 150,70 To 500,150
_SETFONT["newcentury",24]
LODEE$="LOADING"
Text(640/2)-(Text Length(LODEE$)/2),110,LODEE$
End Proc
Procedure _CLEAR_PALETTE
Flash Off
Palette 0,0,0,0,0,0,0,0
End Proc
Procedure _RESTORE_PALETTE
Palette $0,$FFF,$D20,$FF0,$F0,$3AF,$C1A
Flash 7,"(FFF,20)(000,20)"
End Proc
Procedure _CONVERT
' Dir$="hd1:coding/amos_pro/z003/"
' Load "ANIMALS30-35"
Colour Back $FFF : Wait Vbl
Screen Open 0,640,256,2,Hires
Curs Off
Palette $FFF,$FFF
Flash Off
'Wait 10
For A=30 To 34
Paper 0 : Cls
Unpack A
PBASE=Phybase(0)
Reserve As Work A,20480
Copy PBASE,PBASE+20480 To Start(A)
Next
Erase 35
End Proc
'--------- setup routines(routine(stuff)..?.)
_CONVERT
_LOAD_MUSIC
_FONTS_INTO_RAM[10]
'_INFO_ON_FONTS[1119]
'_SETUP_BOBS : Rem PUT IN IF YA LIKE (NOT NEEDED COZ BOBS ARE IN BANK 1)
_GO_PIC
_SETUP_SCREENS
_CHECK_EFILES[NUM_OF_PAGES]
_LOAD_SELECTION_PAGES
Show On
'-------- main loop for selecting
_SHOW_SELECTION_SCREEN[SELECT_PAGE]
_SELECT_ONE[1]